#pragma once
#include <string>
#include "context.h"

#include "cfg_callbacks.h"

class CfgParser
{
//class IEventCallback
//{
//public:
//    virtual ~IEventCallback() {}
//
//    virtual void OnDocumentBegin(Context& context, std::string file_name) = 0;
//    virtual void OnDocumentEnd(Context& context) = 0;
//    virtual void OnFunctionBegin(Context& context, std::string name, std::string id) = 0;
//    virtual void OnFunctionEnd(Context& context) = 0;
//    virtual void OnBlock(Context& context, int id) = 0;
//    virtual void OnGoto(Context& context, int to) = 0;
//    virtual void AddCodeLine(Context& context, std::string& code_line) = 0;
//};

public:
    CfgParser(CfgCallbacks* callbacks);
    void ParseFile(Context& context, const std::string& path_str);

private:

    void ParseFunction(Context& context, std::stringstream& content);

private:

    CfgCallbacks* callbacks_;
};


